Load libraries
library(knitr)
library(rmdformats)
library(ggplot2)
library(ggpubr)
library(GGally)
Registered S3 method overwritten by 'GGally':
method from
+.gg ggplot2
library(car)
Loading required package: carData
library(tidyverse)
library(lme4)
library(lmerTest)
library("MuMIn")
library(lmtest)
library(boot)
Read datasets
AllSubs_NeuralActivation <- read.csv('/Users/luisalvarez/Documents/GitHub/RM_Thesis_Neuroforecasting/ProcessedData/AllSubs_NeuralActivation_Aggregate_Combined_clean.csv')
AllSubs_NeuralActivation_Comedy <- read.csv('/Users/luisalvarez/Documents/GitHub/RM_Thesis_Neuroforecasting/ProcessedData/AllSubs_NeuralActivation_Aggregate_Combined_Comedy_clean.csv')
AllSubs_NeuralActivation_Horror <- read.csv('/Users/luisalvarez/Documents/GitHub/RM_Thesis_Neuroforecasting/ProcessedData/AllSubs_NeuralActivation_Aggregate_Combined_Horror_clean.csv')
Notes:
- Have note removed outliers from data.
Create data frames for each model.
# Define aggregate variables.
All_Gross_W1_log <- log(AllSubs_NeuralActivation$Gross_US_W1_num)
All_Theaters_W1 <- AllSubs_NeuralActivation$Theaters_US_W1_num
Comedy_Gross_W1_log <- log(AllSubs_NeuralActivation_Comedy$Gross_US_W1_num)
Comedy_Theaters_W1 <- AllSubs_NeuralActivation_Comedy$Theaters_US_W1_num
Horror_Gross_W1_log <- log(AllSubs_NeuralActivation_Horror$Gross_US_W1_num)
Horror_Theaters_W1 <- AllSubs_NeuralActivation_Horror$Theaters_US_W1_num
M1_df <- data.frame(All_Gross_W1_log, All_Theaters_W1)
M1_C_df <- data.frame(Comedy_Gross_W1_log, Comedy_Theaters_W1)
M1_H_df <- data.frame(Horror_Gross_W1_log, Horror_Theaters_W1)
# Define affect variables.
All_PA <- AllSubs_NeuralActivation$Pos_arousal_scaled
All_NA <- AllSubs_NeuralActivation$Neg_arousal_scaled
Comedy_PA <- AllSubs_NeuralActivation_Comedy$Pos_arousal_scaled
Comedy_NA <- AllSubs_NeuralActivation_Comedy$Neg_arousal_scaled
Horror_PA <- AllSubs_NeuralActivation_Horror$Pos_arousal_scaled
Horror_NA <- AllSubs_NeuralActivation_Horror$Neg_arousal_scaled
M2_df <- data.frame(All_Gross_W1_log, All_PA, All_NA)
M2_C_df <- data.frame(Comedy_Gross_W1_log, Comedy_PA, Comedy_NA)
M2_H_df <- data.frame(Horror_Gross_W1_log, Horror_PA, Horror_NA)
# Define ISC variables.
All_NAcc_ISC <- AllSubs_NeuralActivation$NAcc_ISC
All_AIns_ISC <- AllSubs_NeuralActivation$AIns_ISC
All_MPFC_ISC <- AllSubs_NeuralActivation$MPFC_ISC
Comedy_NAcc_ISC <- AllSubs_NeuralActivation_Comedy$NAcc_ISC
Comedy_AIns_ISC <- AllSubs_NeuralActivation_Comedy$AIns_ISC
Comedy_MPFC_ISC <- AllSubs_NeuralActivation_Comedy$MPFC_ISC
Horror_NAcc_ISC <- AllSubs_NeuralActivation_Horror$NAcc_ISC
Horror_AIns_ISC <- AllSubs_NeuralActivation_Horror$AIns_ISC
Horror_MPFC_ISC <- AllSubs_NeuralActivation_Horror$MPFC_ISC
# Define models.
M4_df <- data.frame(All_NAcc_ISC, All_AIns_ISC, All_MPFC_ISC)
M4_C_df <- data.frame(Comedy_NAcc_ISC, Comedy_AIns_ISC, Comedy_MPFC_ISC)
M4_H_df <- data.frame(Horror_NAcc_ISC, Horror_AIns_ISC, Horror_MPFC_ISC)
M5_df <- data.frame(All_Gross_W1_log, All_PA, All_NA, All_NAcc_ISC, All_AIns_ISC, All_MPFC_ISC)
M5_C_df <- data.frame(Comedy_Gross_W1_log, Comedy_PA, Comedy_NA, Comedy_NAcc_ISC, Comedy_AIns_ISC, Comedy_MPFC_ISC)
M5_H_df <- data.frame(Horror_Gross_W1_log, Horror_PA, Horror_NA, Horror_NAcc_ISC, Horror_AIns_ISC, Horror_MPFC_ISC)
# Define whole variables.
All_NAcc_whole <- AllSubs_NeuralActivation$NAcc_whole
All_AIns_whole <- AllSubs_NeuralActivation$AIns_whole
All_MPFC_whole <- AllSubs_NeuralActivation$MPFC_whole
Comedy_NAcc_whole <- AllSubs_NeuralActivation_Comedy$NAcc_whole
Comedy_AIns_whole <- AllSubs_NeuralActivation_Comedy$AIns_whole
Comedy_MPFC_whole <- AllSubs_NeuralActivation_Comedy$MPFC_whole
Horror_NAcc_whole <- AllSubs_NeuralActivation_Horror$NAcc_whole
Horror_AIns_whole <- AllSubs_NeuralActivation_Horror$AIns_whole
Horror_MPFC_whole <- AllSubs_NeuralActivation_Horror$MPFC_whole
# Define models.
M6_df <- data.frame(All_NAcc_whole, All_AIns_whole, All_MPFC_whole)
M6_C_df <- data.frame(Comedy_NAcc_whole, Comedy_AIns_whole, Comedy_MPFC_whole)
M6_H_df <- data.frame(Horror_NAcc_whole, Horror_AIns_whole, Horror_MPFC_whole)
M7_df <- data.frame(All_Gross_W1_log, All_PA, All_NA, All_NAcc_whole, All_AIns_whole, All_MPFC_whole)
M7_C_df <- data.frame(Comedy_Gross_W1_log, Comedy_PA, Comedy_NA, Comedy_NAcc_whole,
Comedy_AIns_whole, Comedy_MPFC_whole)
M7_H_df <- data.frame(Horror_Gross_W1_log, Horror_PA, Horror_NA, Horror_NAcc_whole,
Horror_AIns_whole, Horror_MPFC_whole)
# Define onset variables.
All_NAcc_onset <- AllSubs_NeuralActivation$NAcc_onset
All_AIns_onset <- AllSubs_NeuralActivation$AIns_onset
All_MPFC_onset <- AllSubs_NeuralActivation$MPFC_onset
Comedy_NAcc_onset <- AllSubs_NeuralActivation_Comedy$NAcc_onset
Comedy_AIns_onset <- AllSubs_NeuralActivation_Comedy$AIns_onset
Comedy_MPFC_onset <- AllSubs_NeuralActivation_Comedy$MPFC_onset
Horror_NAcc_onset <- AllSubs_NeuralActivation_Horror$NAcc_onset
Horror_AIns_onset <- AllSubs_NeuralActivation_Horror$AIns_onset
Horror_MPFC_onset <- AllSubs_NeuralActivation_Horror$MPFC_onset
# Define models.
M8_df <- data.frame(All_NAcc_onset, All_AIns_onset, All_MPFC_onset)
M8_C_df <- data.frame(Comedy_NAcc_onset, Comedy_AIns_onset, Comedy_MPFC_onset)
M8_H_df <- data.frame(Horror_NAcc_onset, Horror_AIns_onset, Horror_MPFC_onset)
M9_df <- data.frame(All_Gross_W1_log, All_PA, All_NA, All_NAcc_onset, All_AIns_onset, All_MPFC_onset)
M9_C_df <- data.frame(Comedy_Gross_W1_log, Comedy_PA, Comedy_NA, Comedy_NAcc_onset,
Comedy_AIns_onset, Comedy_MPFC_onset)
M9_H_df <- data.frame(Horror_Gross_W1_log, Horror_PA, Horror_NA, Horror_NAcc_onset,
Horror_AIns_onset, Horror_MPFC_onset)
# Define middle variables.
All_NAcc_middle <- AllSubs_NeuralActivation$NAcc_middle
All_AIns_middle <- AllSubs_NeuralActivation$AIns_middle
All_MPFC_middle <- AllSubs_NeuralActivation$MPFC_middle
Comedy_NAcc_middle <- AllSubs_NeuralActivation_Comedy$NAcc_middle
Comedy_AIns_middle <- AllSubs_NeuralActivation_Comedy$AIns_middle
Comedy_MPFC_middle <- AllSubs_NeuralActivation_Comedy$MPFC_middle
Horror_NAcc_middle <- AllSubs_NeuralActivation_Horror$NAcc_middle
Horror_AIns_middle <- AllSubs_NeuralActivation_Horror$AIns_middle
Horror_MPFC_middle <- AllSubs_NeuralActivation_Horror$MPFC_middle
# Define models.
M10_df <- data.frame(All_NAcc_middle, All_AIns_middle, All_MPFC_middle)
M10_C_df <- data.frame(Comedy_NAcc_middle, Comedy_AIns_middle, Comedy_MPFC_middle)
M10_H_df <- data.frame(Horror_NAcc_middle, Horror_AIns_middle, Horror_MPFC_middle)
M11_df <- data.frame(All_Gross_W1_log, All_PA, All_NA, All_NAcc_middle, All_AIns_middle, All_MPFC_middle)
M11_C_df <- data.frame(Comedy_Gross_W1_log, Comedy_PA, Comedy_NA, Comedy_NAcc_middle,
Comedy_AIns_middle, Comedy_MPFC_middle)
M11_H_df <- data.frame(Horror_Gross_W1_log, Horror_PA, Horror_NA, Horror_NAcc_middle,
Horror_AIns_middle, Horror_MPFC_middle)
# Define middle variables.
All_NAcc_offset <- AllSubs_NeuralActivation$NAcc_offset
All_AIns_offset <- AllSubs_NeuralActivation$AIns_offset
All_MPFC_offset <- AllSubs_NeuralActivation$MPFC_offset
Comedy_NAcc_offset <- AllSubs_NeuralActivation_Comedy$NAcc_offset
Comedy_AIns_offset <- AllSubs_NeuralActivation_Comedy$AIns_offset
Comedy_MPFC_offset <- AllSubs_NeuralActivation_Comedy$MPFC_offset
Horror_NAcc_offset <- AllSubs_NeuralActivation_Horror$NAcc_offset
Horror_AIns_offset <- AllSubs_NeuralActivation_Horror$AIns_offset
Horror_MPFC_offset <- AllSubs_NeuralActivation_Horror$MPFC_offset
# Define models.
M12_df <- data.frame(All_NAcc_offset, All_AIns_offset, All_MPFC_offset)
M12_C_df <- data.frame(Comedy_NAcc_offset, Comedy_AIns_offset, Comedy_MPFC_offset)
M12_H_df <- data.frame(Horror_NAcc_offset, Horror_AIns_offset, Horror_MPFC_offset)
M13_df <- data.frame(All_Gross_W1_log, All_PA, All_NA, All_NAcc_offset, All_AIns_offset, All_MPFC_offset)
M13_C_df <- data.frame(Comedy_Gross_W1_log, Comedy_PA, Comedy_NA, Comedy_NAcc_offset,
Comedy_AIns_offset, Comedy_MPFC_offset)
M13_H_df <- data.frame(Horror_Gross_W1_log, Horror_PA, Horror_NA, Horror_NAcc_offset,
Horror_AIns_offset, Horror_MPFC_offset)
M14_df <- data.frame(All_Gross_W1_log, All_PA, All_NA, All_NAcc_onset, All_AIns_middle, All_MPFC_offset)
M14_C_df <- data.frame(Comedy_Gross_W1_log, Comedy_PA, Comedy_NA, Comedy_NAcc_onset,
Comedy_AIns_middle, Comedy_MPFC_offset)
M14_H_df <- data.frame(Horror_Gross_W1_log, Horror_PA, Horror_NA, Horror_NAcc_onset,
Horror_AIns_middle, Horror_MPFC_offset)
Neuroforecasting: First Week US.
M1: Behavioral data
Call:
lm(formula = log(Gross_US_W1_num) ~ Type + scale(Theaters_US_W1_num) +
Type:scale(Theaters_US_W1_num), data = AllSubs_NeuralActivation %>%
mutate(Type = factor(Type, levels = c("horror", "comedy"))))
Residuals:
Min 1Q Median 3Q Max
-1.55922 -0.28515 0.02387 0.33475 1.38066
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 16.4641 0.2010 81.928 < 2e-16 ***
Typecomedy -0.5646 0.2655 -2.127 0.04310 *
scale(Theaters_US_W1_num) 1.5282 0.4206 3.633 0.00121 **
Typecomedy:scale(Theaters_US_W1_num) -0.3868 0.4422 -0.875 0.38980
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 0.688 on 26 degrees of freedom
Multiple R-squared: 0.7944, Adjusted R-squared: 0.7706
F-statistic: 33.48 on 3 and 26 DF, p-value: 4.425e-09
Warning: 'r.squaredGLMM' now calculates a revised statistic. See the help page.
R2m R2c
[1,] 0.7759523 0.7759523
[1] 68.40126



M2: Affective data alone
Call:
lm(formula = log(Gross_US_W1_num) ~ Type + scale(Pos_arousal_scaled) +
scale(Neg_arousal_scaled) + Type:scale(Pos_arousal_scaled) +
Type:scale(Neg_arousal_scaled), data = AllSubs_NeuralActivation %>%
mutate(Type = factor(Type, levels = c("horror", "comedy"))))
Residuals:
Min 1Q Median 3Q Max
-4.2576 -0.5024 0.2063 0.9296 1.9543
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 16.8120 1.0941 15.367 6.41e-14 ***
Typecomedy -0.5457 1.9186 -0.284 0.779
scale(Pos_arousal_scaled) -0.3712 0.8719 -0.426 0.674
scale(Neg_arousal_scaled) -0.3446 0.7352 -0.469 0.643
Typecomedy:scale(Pos_arousal_scaled) 0.6381 0.9713 0.657 0.517
Typecomedy:scale(Neg_arousal_scaled) 1.2147 1.9586 0.620 0.541
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 1.436 on 24 degrees of freedom
Multiple R-squared: 0.1734, Adjusted R-squared: 0.001154
F-statistic: 1.007 on 5 and 24 DF, p-value: 0.4352
R2m R2c
[1,] 0.1478985 0.1478985
[1] 114.1387



M3: Aggregate and affective data alone
Call:
lm(formula = log(Gross_US_W1_num) ~ Type + scale(Pos_arousal_scaled) +
scale(Neg_arousal_scaled) + Type:scale(Pos_arousal_scaled) +
Type:scale(Neg_arousal_scaled), data = AllSubs_NeuralActivation %>%
mutate(Type = factor(Type, levels = c("horror", "comedy"))))
Residuals:
Min 1Q Median 3Q Max
-4.2576 -0.5024 0.2063 0.9296 1.9543
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 16.8120 1.0941 15.367 6.41e-14 ***
Typecomedy -0.5457 1.9186 -0.284 0.779
scale(Pos_arousal_scaled) -0.3712 0.8719 -0.426 0.674
scale(Neg_arousal_scaled) -0.3446 0.7352 -0.469 0.643
Typecomedy:scale(Pos_arousal_scaled) 0.6381 0.9713 0.657 0.517
Typecomedy:scale(Neg_arousal_scaled) 1.2147 1.9586 0.620 0.541
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 1.436 on 24 degrees of freedom
Multiple R-squared: 0.1734, Adjusted R-squared: 0.001154
F-statistic: 1.007 on 5 and 24 DF, p-value: 0.4352
R2m R2c
[1,] 0.1478985 0.1478985
[1] 114.1387
M4: ISC data alone
Call:
lm(formula = log(Gross_US_W1_num) ~ Type + +scale(NAcc_ISC) +
scale(AIns_ISC) + scale(MPFC_ISC) + Type:scale(NAcc_ISC) +
Type:scale(AIns_ISC) + Type:scale(MPFC_ISC), data = AllSubs_NeuralActivation %>%
mutate(Type = factor(Type, levels = c("horror", "comedy"))))
Residuals:
Min 1Q Median 3Q Max
-4.2048 -0.1694 0.0611 0.5329 2.1397
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 16.5755 0.4001 41.425 <2e-16 ***
Typecomedy -0.8666 0.5426 -1.597 0.125
scale(NAcc_ISC) 0.9792 0.6407 1.528 0.141
scale(AIns_ISC) -0.3290 0.3713 -0.886 0.385
scale(MPFC_ISC) 0.3426 0.5758 0.595 0.558
Typecomedy:scale(NAcc_ISC) -0.8127 0.7372 -1.102 0.282
Typecomedy:scale(AIns_ISC) 0.4643 0.6875 0.675 0.507
Typecomedy:scale(MPFC_ISC) -0.3259 0.6793 -0.480 0.636
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 1.412 on 22 degrees of freedom
Multiple R-squared: 0.2675, Adjusted R-squared: 0.0344
F-statistic: 1.148 on 7 and 22 DF, p-value: 0.3709
R2m R2c
[1,] 0.2169207 0.2169207
[1] 114.5127



M5: ISC data + affective data + behavioral data
Call:
lm(formula = log(Gross_US_W1_num) ~ Type + scale(Theaters_US_W1_num) +
scale(Pos_arousal_scaled) + scale(Neg_arousal_scaled) + scale(NAcc_ISC) +
scale(AIns_ISC) + scale(MPFC_ISC) + Type:scale(Theaters_US_W1_num) +
Type:scale(Pos_arousal_scaled) + Type:scale(Neg_arousal_scaled) +
Type:scale(NAcc_ISC) + Type:scale(AIns_ISC) + Type:scale(MPFC_ISC),
data = AllSubs_NeuralActivation %>% mutate(Type = factor(Type,
levels = c("horror", "comedy"))))
Residuals:
Min 1Q Median 3Q Max
-0.87653 -0.25413 0.03668 0.21991 0.86396
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 16.2308 0.4864 33.372 3.2e-16 ***
Typecomedy 1.7209 0.8660 1.987 0.0643 .
scale(Theaters_US_W1_num) 1.0283 0.4577 2.246 0.0391 *
scale(Pos_arousal_scaled) -0.6154 0.3505 -1.756 0.0983 .
scale(Neg_arousal_scaled) -0.3082 0.3339 -0.923 0.3697
scale(NAcc_ISC) 0.5100 0.3260 1.564 0.1374
scale(AIns_ISC) -0.2797 0.1515 -1.846 0.0835 .
scale(MPFC_ISC) 0.4920 0.2487 1.978 0.0654 .
Typecomedy:scale(Theaters_US_W1_num) 0.2032 0.4732 0.429 0.6734
Typecomedy:scale(Pos_arousal_scaled) 0.3153 0.4247 0.742 0.4686
Typecomedy:scale(Neg_arousal_scaled) 2.5055 0.8856 2.829 0.0121 *
Typecomedy:scale(NAcc_ISC) -0.1028 0.3831 -0.268 0.7919
Typecomedy:scale(AIns_ISC) 0.1782 0.3252 0.548 0.5912
Typecomedy:scale(MPFC_ISC) -0.8663 0.2976 -2.911 0.0102 *
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 0.5683 on 16 degrees of freedom
Multiple R-squared: 0.9137, Adjusted R-squared: 0.8435
F-statistic: 13.02 on 13 and 16 DF, p-value: 3.967e-06
R2m R2c
[1,] 0.8537563 0.8537563
[1] 62.36914



M6: Neural whole data alone
Call:
lm(formula = log(Gross_US_W1_num) ~ Type + +scale(NAcc_whole) +
scale(AIns_whole) + scale(MPFC_whole) + Type:scale(NAcc_whole) +
Type:scale(AIns_whole) + Type:scale(MPFC_whole), data = AllSubs_NeuralActivation %>%
mutate(Type = factor(Type, levels = c("horror", "comedy"))))
Residuals:
Min 1Q Median 3Q Max
-3.3207 -0.4154 0.0875 0.6735 1.9061
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 16.5397 0.5144 32.151 <2e-16 ***
Typecomedy -0.7441 0.7336 -1.014 0.321
scale(NAcc_whole) -0.4610 0.4720 -0.977 0.339
scale(AIns_whole) 0.4847 0.5640 0.859 0.399
scale(MPFC_whole) 0.2074 0.4805 0.432 0.670
Typecomedy:scale(NAcc_whole) 0.3703 0.6367 0.582 0.567
Typecomedy:scale(AIns_whole) -0.3148 0.8648 -0.364 0.719
Typecomedy:scale(MPFC_whole) 0.4481 0.5985 0.749 0.462
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 1.39 on 22 degrees of freedom
Multiple R-squared: 0.2897, Adjusted R-squared: 0.06374
F-statistic: 1.282 on 7 and 22 DF, p-value: 0.3043
R2m R2c
[1,] 0.2363251 0.2363251
[1] 113.5872



M7: Neural whole data + affective data + behavioral data
Call:
lm(formula = log(Gross_US_W1_num) ~ Type + scale(Theaters_US_W1_num) +
scale(Pos_arousal_scaled) + scale(Neg_arousal_scaled) + scale(NAcc_whole) +
scale(AIns_whole) + scale(MPFC_whole) + Type:scale(Theaters_US_W1_num) +
Type:scale(Pos_arousal_scaled) + Type:scale(Neg_arousal_scaled) +
Type:scale(NAcc_whole) + Type:scale(AIns_whole) + Type:scale(MPFC_whole),
data = AllSubs_NeuralActivation %>% mutate(Type = factor(Type,
levels = c("horror", "comedy"))))
Residuals:
Min 1Q Median 3Q Max
-0.9203 -0.2891 0.1132 0.2785 0.8050
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 15.9682 0.5578 28.630 3.58e-15 ***
Typecomedy 1.9268 0.9387 2.053 0.05684 .
scale(Theaters_US_W1_num) 1.4834 0.4059 3.654 0.00214 **
scale(Pos_arousal_scaled) -0.5858 0.5560 -1.054 0.30776
scale(Neg_arousal_scaled) -0.1951 0.3500 -0.557 0.58504
scale(NAcc_whole) -0.1527 0.2250 -0.679 0.50711
scale(AIns_whole) 0.4056 0.2529 1.604 0.12838
scale(MPFC_whole) 0.1478 0.3226 0.458 0.65303
Typecomedy:scale(Theaters_US_W1_num) -0.3294 0.4249 -0.775 0.44947
Typecomedy:scale(Pos_arousal_scaled) 0.5280 0.5889 0.897 0.38323
Typecomedy:scale(Neg_arousal_scaled) 2.6532 0.9664 2.745 0.01437 *
Typecomedy:scale(NAcc_whole) 0.6144 0.3167 1.940 0.07022 .
Typecomedy:scale(AIns_whole) -0.7872 0.4000 -1.968 0.06663 .
Typecomedy:scale(MPFC_whole) 0.1828 0.3609 0.506 0.61952
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 0.5789 on 16 degrees of freedom
Multiple R-squared: 0.9104, Adjusted R-squared: 0.8376
F-statistic: 12.51 on 13 and 16 DF, p-value: 5.242e-06
R2m R2c
[1,] 0.8486198 0.8486198
[1] 63.47876



M8: Neural onset data alone
Call:
lm(formula = log(Gross_US_W1_num) ~ Type + +scale(NAcc_onset) +
scale(AIns_onset) + scale(MPFC_onset) + Type:scale(NAcc_onset) +
Type:scale(AIns_onset) + Type:scale(MPFC_onset), data = AllSubs_NeuralActivation %>%
mutate(Type = factor(Type, levels = c("horror", "comedy"))))
Residuals:
Min 1Q Median 3Q Max
-3.2381 -0.5877 0.0606 0.9313 1.5928
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 16.8587 0.4098 41.139 < 2e-16 ***
Typecomedy -1.5954 0.5607 -2.845 0.00941 **
scale(NAcc_onset) -0.2955 0.4451 -0.664 0.51366
scale(AIns_onset) -0.1522 0.4976 -0.306 0.76255
scale(MPFC_onset) 0.1076 0.4433 0.243 0.81041
Typecomedy:scale(NAcc_onset) 0.4123 0.5784 0.713 0.48342
Typecomedy:scale(AIns_onset) -0.8878 0.7206 -1.232 0.23092
Typecomedy:scale(MPFC_onset) 1.1231 0.6565 1.711 0.10118
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 1.33 on 22 degrees of freedom
Multiple R-squared: 0.3496, Adjusted R-squared: 0.1427
F-statistic: 1.689 on 7 and 22 DF, p-value: 0.1636
R2m R2c
[1,] 0.2896569 0.2896569
[1] 110.9456



M9: Neural onset data + affective data + behavioral data
Call:
lm(formula = log(Gross_US_W1_num) ~ Type + scale(Theaters_US_W1_num) +
scale(Pos_arousal_scaled) + scale(Neg_arousal_scaled) + scale(NAcc_onset) +
scale(AIns_onset) + scale(MPFC_onset) + Type:scale(Theaters_US_W1_num) +
Type:scale(Pos_arousal_scaled) + Type:scale(Neg_arousal_scaled) +
Type:scale(NAcc_onset) + Type:scale(AIns_onset) + Type:scale(MPFC_onset),
data = AllSubs_NeuralActivation %>% mutate(Type = factor(Type,
levels = c("horror", "comedy"))))
Residuals:
Min 1Q Median 3Q Max
-1.03846 -0.29896 -0.00776 0.35507 1.15974
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 16.6929 0.7942 21.020 4.44e-13 ***
Typecomedy 0.3557 1.2922 0.275 0.78662
scale(Theaters_US_W1_num) 1.5307 0.4413 3.468 0.00317 **
scale(Pos_arousal_scaled) -0.7416 0.5480 -1.353 0.19475
scale(Neg_arousal_scaled) -0.5481 0.5011 -1.094 0.29026
scale(NAcc_onset) -0.1715 0.2349 -0.730 0.47592
scale(AIns_onset) -0.5871 0.3492 -1.681 0.11213
scale(MPFC_onset) 0.3101 0.2864 1.083 0.29486
Typecomedy:scale(Theaters_US_W1_num) -0.3967 0.4710 -0.842 0.41204
Typecomedy:scale(Pos_arousal_scaled) 0.5668 0.6007 0.944 0.35945
Typecomedy:scale(Neg_arousal_scaled) 1.8854 1.1926 1.581 0.13346
Typecomedy:scale(NAcc_onset) 0.3553 0.3475 1.022 0.32181
Typecomedy:scale(AIns_onset) 0.2591 0.4616 0.561 0.58242
Typecomedy:scale(MPFC_onset) -0.1599 0.4203 -0.380 0.70861
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 0.6957 on 16 degrees of freedom
Multiple R-squared: 0.8706, Adjusted R-squared: 0.7654
F-statistic: 8.28 on 13 and 16 DF, p-value: 8.012e-05
R2m R2c
[1,] 0.7877591 0.7877591
[1] 74.50775



M10: Neural middle data alone
Call:
lm(formula = log(Gross_US_W1_num) ~ Type + +scale(NAcc_middle) +
scale(AIns_middle) + scale(MPFC_middle) + Type:scale(NAcc_middle) +
Type:scale(AIns_middle) + Type:scale(MPFC_middle), data = AllSubs_NeuralActivation %>%
mutate(Type = factor(Type, levels = c("horror", "comedy"))))
Residuals:
Min 1Q Median 3Q Max
-4.2183 -0.4486 0.0990 0.5238 1.6945
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 16.72540 0.47887 34.927 <2e-16 ***
Typecomedy -0.48899 0.67327 -0.726 0.475
scale(NAcc_middle) -0.12518 0.52039 -0.241 0.812
scale(AIns_middle) 0.14991 0.44957 0.333 0.742
scale(MPFC_middle) -0.18678 0.36032 -0.518 0.609
Typecomedy:scale(NAcc_middle) -0.08984 0.65434 -0.137 0.892
Typecomedy:scale(AIns_middle) 0.90710 0.75547 1.201 0.243
Typecomedy:scale(MPFC_middle) 0.25704 0.59014 0.436 0.667
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 1.413 on 22 degrees of freedom
Multiple R-squared: 0.2664, Adjusted R-squared: 0.03297
F-statistic: 1.141 on 7 and 22 DF, p-value: 0.3743
R2m R2c
[1,] 0.2159758 0.2159758
[1] 114.5573



M11: Neural middle data + affective data + behavioral data
Call:
lm(formula = log(Gross_US_W1_num) ~ Type + scale(Theaters_US_W1_num) +
scale(Pos_arousal_scaled) + scale(Neg_arousal_scaled) + scale(NAcc_middle) +
scale(AIns_middle) + scale(MPFC_middle) + Type:scale(Theaters_US_W1_num) +
Type:scale(Pos_arousal_scaled) + Type:scale(Neg_arousal_scaled) +
Type:scale(NAcc_middle) + Type:scale(AIns_middle) + Type:scale(MPFC_middle),
data = AllSubs_NeuralActivation %>% mutate(Type = factor(Type,
levels = c("horror", "comedy"))))
Residuals:
Min 1Q Median 3Q Max
-1.09293 -0.35963 0.02616 0.30518 0.98599
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 16.15223 0.57597 28.044 4.95e-15 ***
Typecomedy 0.54203 0.98313 0.551 0.58903
scale(Theaters_US_W1_num) 1.77077 0.46757 3.787 0.00162 **
scale(Pos_arousal_scaled) -0.38677 0.44147 -0.876 0.39394
scale(Neg_arousal_scaled) -0.27307 0.40046 -0.682 0.50506
scale(NAcc_middle) 0.28765 0.29669 0.970 0.34671
scale(AIns_middle) 0.22399 0.22274 1.006 0.32957
scale(MPFC_middle) -0.08292 0.18114 -0.458 0.65329
Typecomedy:scale(Theaters_US_W1_num) -0.58783 0.49214 -1.194 0.24971
Typecomedy:scale(Pos_arousal_scaled) 0.22570 0.50983 0.443 0.66390
Typecomedy:scale(Neg_arousal_scaled) 0.86067 1.12726 0.764 0.45627
Typecomedy:scale(NAcc_middle) -0.02351 0.36370 -0.065 0.94927
Typecomedy:scale(AIns_middle) -0.02061 0.47381 -0.044 0.96584
Typecomedy:scale(MPFC_middle) -0.04743 0.30256 -0.157 0.87739
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 0.6913 on 16 degrees of freedom
Multiple R-squared: 0.8722, Adjusted R-squared: 0.7684
F-statistic: 8.4 on 13 and 16 DF, p-value: 7.31e-05
R2m R2c
[1,] 0.7901598 0.7901598
[1] 74.13082



M12: Neural offset data alone
Call:
lm(formula = log(Gross_US_W1_num) ~ Type + +scale(NAcc_offset) +
scale(AIns_offset) + scale(MPFC_offset) + Type:scale(NAcc_offset) +
Type:scale(AIns_offset) + Type:scale(MPFC_offset), data = AllSubs_NeuralActivation %>%
mutate(Type = factor(Type, levels = c("horror", "comedy"))))
Residuals:
Min 1Q Median 3Q Max
-3.6705 -0.3237 0.1382 0.4983 1.8838
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 16.62956 0.42725 38.923 <2e-16 ***
Typecomedy -1.08351 0.61196 -1.771 0.0905 .
scale(NAcc_offset) -0.28582 0.43079 -0.663 0.5139
scale(AIns_offset) 0.25035 0.39300 0.637 0.5307
scale(MPFC_offset) 0.41076 0.60318 0.681 0.5030
Typecomedy:scale(NAcc_offset) 0.12555 0.70607 0.178 0.8605
Typecomedy:scale(AIns_offset) -0.73049 0.76329 -0.957 0.3490
Typecomedy:scale(MPFC_offset) -0.05113 0.72014 -0.071 0.9440
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 1.463 on 22 degrees of freedom
Multiple R-squared: 0.2131, Adjusted R-squared: -0.03729
F-statistic: 0.8511 on 7 and 22 DF, p-value: 0.5585
R2m R2c
[1,] 0.1704196 0.1704196
[1] 116.6614



M13: Neural offset data + affective data + behavioral data
Call:
lm(formula = log(Gross_US_W1_num) ~ Type + scale(Theaters_US_W1_num) +
scale(Pos_arousal_scaled) + scale(Neg_arousal_scaled) + scale(NAcc_offset) +
scale(AIns_offset) + scale(MPFC_offset) + Type:scale(Theaters_US_W1_num) +
Type:scale(Pos_arousal_scaled) + Type:scale(Neg_arousal_scaled) +
Type:scale(NAcc_offset) + Type:scale(AIns_offset) + Type:scale(MPFC_offset),
data = AllSubs_NeuralActivation %>% mutate(Type = factor(Type,
levels = c("horror", "comedy"))))
Residuals:
Min 1Q Median 3Q Max
-0.91489 -0.22644 -0.00754 0.26854 0.87866
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 16.54426 0.51655 32.028 6.12e-16 ***
Typecomedy 0.67006 0.81305 0.824 0.42198
scale(Theaters_US_W1_num) 1.52883 0.50309 3.039 0.00782 **
scale(Pos_arousal_scaled) -0.33305 0.46088 -0.723 0.48033
scale(Neg_arousal_scaled) -0.50246 0.43708 -1.150 0.26721
scale(NAcc_offset) -0.08279 0.16747 -0.494 0.62778
scale(AIns_offset) 0.36225 0.18080 2.004 0.06234 .
scale(MPFC_offset) 0.01377 0.40656 0.034 0.97339
Typecomedy:scale(Theaters_US_W1_num) -0.32755 0.51610 -0.635 0.53462
Typecomedy:scale(Pos_arousal_scaled) 0.47901 0.49417 0.969 0.34682
Typecomedy:scale(Neg_arousal_scaled) 2.12858 0.87787 2.425 0.02753 *
Typecomedy:scale(NAcc_offset) 0.05720 0.27250 0.210 0.83639
Typecomedy:scale(AIns_offset) -0.36342 0.32790 -1.108 0.28410
Typecomedy:scale(MPFC_offset) 0.47131 0.43419 1.086 0.29378
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 0.5488 on 16 degrees of freedom
Multiple R-squared: 0.9195, Adjusted R-squared: 0.854
F-statistic: 14.05 on 13 and 16 DF, p-value: 2.342e-06
R2m R2c
[1,] 0.8629937 0.8629937
[1] 60.27908



M14: Sequence model
Call:
lm(formula = log(Gross_US_W1_num) ~ Type + scale(Theaters_US_W1_num) +
scale(Pos_arousal_scaled) + scale(Neg_arousal_scaled) + scale(NAcc_onset) +
scale(AIns_middle) + scale(MPFC_offset) + Type:scale(Theaters_US_W1_num) +
Type:scale(Pos_arousal_scaled) + Type:scale(Neg_arousal_scaled) +
Type:scale(NAcc_onset) + Type:scale(AIns_middle) + Type:scale(MPFC_offset),
data = AllSubs_NeuralActivation %>% mutate(Type = factor(Type,
levels = c("horror", "comedy"))))
Residuals:
Min 1Q Median 3Q Max
-0.67039 -0.17300 0.05149 0.24972 0.52977
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 16.40339 0.37434 43.820 < 2e-16 ***
Typecomedy 1.54711 0.70952 2.181 0.04449 *
scale(Theaters_US_W1_num) 1.11462 0.47322 2.355 0.03160 *
scale(Pos_arousal_scaled) -0.55142 0.36523 -1.510 0.15059
scale(Neg_arousal_scaled) -0.56512 0.33264 -1.699 0.10870
scale(NAcc_onset) -0.55098 0.20252 -2.721 0.01512 *
scale(AIns_middle) 0.47371 0.14548 3.256 0.00496 **
scale(MPFC_offset) 0.49881 0.40397 1.235 0.23474
Typecomedy:scale(Theaters_US_W1_num) 0.08677 0.48186 0.180 0.85936
Typecomedy:scale(Pos_arousal_scaled) 0.57794 0.40171 1.439 0.16951
Typecomedy:scale(Neg_arousal_scaled) 2.89966 0.82288 3.524 0.00282 **
Typecomedy:scale(NAcc_onset) 0.83992 0.24292 3.458 0.00324 **
Typecomedy:scale(AIns_middle) -0.42931 0.26991 -1.591 0.13127
Typecomedy:scale(MPFC_offset) 0.05476 0.41841 0.131 0.89750
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 0.4237 on 16 degrees of freedom
Multiple R-squared: 0.952, Adjusted R-squared: 0.913
F-statistic: 24.4 on 13 and 16 DF, p-value: 4.42e-08
R2m R2c
[1,] 0.916248 0.916248
[1] 44.76056



LS0tCnRpdGxlOiAiUiBOb3RlYm9vayIKb3V0cHV0OiBodG1sX25vdGVib29rCi0tLQoKYGBge3Igc2V0dXAsIGluY2x1ZGU9RkFMU0V9CmtuaXRyOjpvcHRzX2NodW5rJHNldChlY2hvID0gVFJVRSkKYGBgCgojIExvYWQgbGlicmFyaWVzCmBgYHtyfQpsaWJyYXJ5KGtuaXRyKQpsaWJyYXJ5KHJtZGZvcm1hdHMpCmxpYnJhcnkoZ2dwbG90MikKbGlicmFyeShnZ3B1YnIpCmxpYnJhcnkoR0dhbGx5KQpsaWJyYXJ5KGNhcikKYGBgCgoKYGBge3IsIHdhcm5pbmcgPSBGQUxTRSwgbWVzc2FnZSA9IEZBTFNFfQpsaWJyYXJ5KHRpZHl2ZXJzZSkKbGlicmFyeShsbWU0KQpsaWJyYXJ5KGxtZXJUZXN0KQpsaWJyYXJ5KCJNdU1JbiIpCmxpYnJhcnkobG10ZXN0KQpsaWJyYXJ5KGJvb3QpCmBgYAoKIyBSZWFkIGRhdGFzZXRzCmBgYHtyfQpBbGxTdWJzX05ldXJhbEFjdGl2YXRpb24gPC0gcmVhZC5jc3YoJy9Vc2Vycy9sdWlzYWx2YXJlei9Eb2N1bWVudHMvR2l0SHViL1JNX1RoZXNpc19OZXVyb2ZvcmVjYXN0aW5nL1Byb2Nlc3NlZERhdGEvQWxsU3Vic19OZXVyYWxBY3RpdmF0aW9uX0FnZ3JlZ2F0ZV9Db21iaW5lZF9jbGVhbi5jc3YnKQoKQWxsU3Vic19OZXVyYWxBY3RpdmF0aW9uX0NvbWVkeSA8LSByZWFkLmNzdignL1VzZXJzL2x1aXNhbHZhcmV6L0RvY3VtZW50cy9HaXRIdWIvUk1fVGhlc2lzX05ldXJvZm9yZWNhc3RpbmcvUHJvY2Vzc2VkRGF0YS9BbGxTdWJzX05ldXJhbEFjdGl2YXRpb25fQWdncmVnYXRlX0NvbWJpbmVkX0NvbWVkeV9jbGVhbi5jc3YnKQoKQWxsU3Vic19OZXVyYWxBY3RpdmF0aW9uX0hvcnJvciA8LSByZWFkLmNzdignL1VzZXJzL2x1aXNhbHZhcmV6L0RvY3VtZW50cy9HaXRIdWIvUk1fVGhlc2lzX05ldXJvZm9yZWNhc3RpbmcvUHJvY2Vzc2VkRGF0YS9BbGxTdWJzX05ldXJhbEFjdGl2YXRpb25fQWdncmVnYXRlX0NvbWJpbmVkX0hvcnJvcl9jbGVhbi5jc3YnKQoKYGBgCiMgTm90ZXM6IAogLSBIYXZlIG5vdGUgcmVtb3ZlZCBvdXRsaWVycyBmcm9tIGRhdGEuCgojIENyZWF0ZSBkYXRhIGZyYW1lcyBmb3IgZWFjaCBtb2RlbC4KYGBge3J9CiMgRGVmaW5lIGFnZ3JlZ2F0ZSB2YXJpYWJsZXMuIApBbGxfR3Jvc3NfVzFfbG9nIDwtIGxvZyhBbGxTdWJzX05ldXJhbEFjdGl2YXRpb24kR3Jvc3NfVVNfVzFfbnVtKQpBbGxfVGhlYXRlcnNfVzEgPC0gQWxsU3Vic19OZXVyYWxBY3RpdmF0aW9uJFRoZWF0ZXJzX1VTX1cxX251bQoKQ29tZWR5X0dyb3NzX1cxX2xvZyA8LSBsb2coQWxsU3Vic19OZXVyYWxBY3RpdmF0aW9uX0NvbWVkeSRHcm9zc19VU19XMV9udW0pCkNvbWVkeV9UaGVhdGVyc19XMSA8LSBBbGxTdWJzX05ldXJhbEFjdGl2YXRpb25fQ29tZWR5JFRoZWF0ZXJzX1VTX1cxX251bQoKSG9ycm9yX0dyb3NzX1cxX2xvZyA8LSBsb2coQWxsU3Vic19OZXVyYWxBY3RpdmF0aW9uX0hvcnJvciRHcm9zc19VU19XMV9udW0pCkhvcnJvcl9UaGVhdGVyc19XMSA8LSBBbGxTdWJzX05ldXJhbEFjdGl2YXRpb25fSG9ycm9yJFRoZWF0ZXJzX1VTX1cxX251bQogIApNMV9kZiA8LSBkYXRhLmZyYW1lKEFsbF9Hcm9zc19XMV9sb2csIEFsbF9UaGVhdGVyc19XMSkgCk0xX0NfZGYgPC0gZGF0YS5mcmFtZShDb21lZHlfR3Jvc3NfVzFfbG9nLCBDb21lZHlfVGhlYXRlcnNfVzEpIApNMV9IX2RmIDwtIGRhdGEuZnJhbWUoSG9ycm9yX0dyb3NzX1cxX2xvZywgSG9ycm9yX1RoZWF0ZXJzX1cxKSAKCiMgRGVmaW5lIGFmZmVjdCB2YXJpYWJsZXMuCkFsbF9QQSA8LSBBbGxTdWJzX05ldXJhbEFjdGl2YXRpb24kUG9zX2Fyb3VzYWxfc2NhbGVkCkFsbF9OQSA8LSBBbGxTdWJzX05ldXJhbEFjdGl2YXRpb24kTmVnX2Fyb3VzYWxfc2NhbGVkCgpDb21lZHlfUEEgPC0gQWxsU3Vic19OZXVyYWxBY3RpdmF0aW9uX0NvbWVkeSRQb3NfYXJvdXNhbF9zY2FsZWQKQ29tZWR5X05BIDwtIEFsbFN1YnNfTmV1cmFsQWN0aXZhdGlvbl9Db21lZHkkTmVnX2Fyb3VzYWxfc2NhbGVkCgpIb3Jyb3JfUEEgPC0gQWxsU3Vic19OZXVyYWxBY3RpdmF0aW9uX0hvcnJvciRQb3NfYXJvdXNhbF9zY2FsZWQKSG9ycm9yX05BIDwtIEFsbFN1YnNfTmV1cmFsQWN0aXZhdGlvbl9Ib3Jyb3IkTmVnX2Fyb3VzYWxfc2NhbGVkCgpNMl9kZiA8LSBkYXRhLmZyYW1lKEFsbF9Hcm9zc19XMV9sb2csIEFsbF9QQSwgQWxsX05BKSAKTTJfQ19kZiA8LSBkYXRhLmZyYW1lKENvbWVkeV9Hcm9zc19XMV9sb2csIENvbWVkeV9QQSwgQ29tZWR5X05BKSAKTTJfSF9kZiA8LSBkYXRhLmZyYW1lKEhvcnJvcl9Hcm9zc19XMV9sb2csIEhvcnJvcl9QQSwgSG9ycm9yX05BKSAKYGBgCgpgYGB7cn0KIyBEZWZpbmUgSVNDIHZhcmlhYmxlcy4gCkFsbF9OQWNjX0lTQyA8LSBBbGxTdWJzX05ldXJhbEFjdGl2YXRpb24kTkFjY19JU0MKQWxsX0FJbnNfSVNDIDwtIEFsbFN1YnNfTmV1cmFsQWN0aXZhdGlvbiRBSW5zX0lTQwpBbGxfTVBGQ19JU0MgPC0gQWxsU3Vic19OZXVyYWxBY3RpdmF0aW9uJE1QRkNfSVNDCgpDb21lZHlfTkFjY19JU0MgPC0gQWxsU3Vic19OZXVyYWxBY3RpdmF0aW9uX0NvbWVkeSROQWNjX0lTQwpDb21lZHlfQUluc19JU0MgPC0gQWxsU3Vic19OZXVyYWxBY3RpdmF0aW9uX0NvbWVkeSRBSW5zX0lTQwpDb21lZHlfTVBGQ19JU0MgPC0gQWxsU3Vic19OZXVyYWxBY3RpdmF0aW9uX0NvbWVkeSRNUEZDX0lTQwoKSG9ycm9yX05BY2NfSVNDIDwtIEFsbFN1YnNfTmV1cmFsQWN0aXZhdGlvbl9Ib3Jyb3IkTkFjY19JU0MKSG9ycm9yX0FJbnNfSVNDIDwtIEFsbFN1YnNfTmV1cmFsQWN0aXZhdGlvbl9Ib3Jyb3IkQUluc19JU0MKSG9ycm9yX01QRkNfSVNDIDwtIEFsbFN1YnNfTmV1cmFsQWN0aXZhdGlvbl9Ib3Jyb3IkTVBGQ19JU0MKCiMgRGVmaW5lIG1vZGVscy4gCk00X2RmIDwtIGRhdGEuZnJhbWUoQWxsX05BY2NfSVNDLCBBbGxfQUluc19JU0MsIEFsbF9NUEZDX0lTQykgCk00X0NfZGYgPC0gZGF0YS5mcmFtZShDb21lZHlfTkFjY19JU0MsIENvbWVkeV9BSW5zX0lTQywgQ29tZWR5X01QRkNfSVNDKSAKTTRfSF9kZiA8LSBkYXRhLmZyYW1lKEhvcnJvcl9OQWNjX0lTQywgSG9ycm9yX0FJbnNfSVNDLCBIb3Jyb3JfTVBGQ19JU0MpIAoKTTVfZGYgPC0gZGF0YS5mcmFtZShBbGxfR3Jvc3NfVzFfbG9nLCBBbGxfUEEsIEFsbF9OQSwgQWxsX05BY2NfSVNDLCBBbGxfQUluc19JU0MsIEFsbF9NUEZDX0lTQykgCk01X0NfZGYgPC0gZGF0YS5mcmFtZShDb21lZHlfR3Jvc3NfVzFfbG9nLCBDb21lZHlfUEEsIENvbWVkeV9OQSwgQ29tZWR5X05BY2NfSVNDLCBDb21lZHlfQUluc19JU0MsIENvbWVkeV9NUEZDX0lTQykgCk01X0hfZGYgPC0gZGF0YS5mcmFtZShIb3Jyb3JfR3Jvc3NfVzFfbG9nLCBIb3Jyb3JfUEEsIEhvcnJvcl9OQSwgSG9ycm9yX05BY2NfSVNDLCBIb3Jyb3JfQUluc19JU0MsIEhvcnJvcl9NUEZDX0lTQykgCmBgYAoKYGBge3J9CiMgRGVmaW5lIHdob2xlIHZhcmlhYmxlcy4gCkFsbF9OQWNjX3dob2xlIDwtIEFsbFN1YnNfTmV1cmFsQWN0aXZhdGlvbiROQWNjX3dob2xlCkFsbF9BSW5zX3dob2xlIDwtIEFsbFN1YnNfTmV1cmFsQWN0aXZhdGlvbiRBSW5zX3dob2xlCkFsbF9NUEZDX3dob2xlIDwtIEFsbFN1YnNfTmV1cmFsQWN0aXZhdGlvbiRNUEZDX3dob2xlCgpDb21lZHlfTkFjY193aG9sZSA8LSBBbGxTdWJzX05ldXJhbEFjdGl2YXRpb25fQ29tZWR5JE5BY2Nfd2hvbGUKQ29tZWR5X0FJbnNfd2hvbGUgPC0gQWxsU3Vic19OZXVyYWxBY3RpdmF0aW9uX0NvbWVkeSRBSW5zX3dob2xlCkNvbWVkeV9NUEZDX3dob2xlIDwtIEFsbFN1YnNfTmV1cmFsQWN0aXZhdGlvbl9Db21lZHkkTVBGQ193aG9sZQoKSG9ycm9yX05BY2Nfd2hvbGUgPC0gQWxsU3Vic19OZXVyYWxBY3RpdmF0aW9uX0hvcnJvciROQWNjX3dob2xlCkhvcnJvcl9BSW5zX3dob2xlIDwtIEFsbFN1YnNfTmV1cmFsQWN0aXZhdGlvbl9Ib3Jyb3IkQUluc193aG9sZQpIb3Jyb3JfTVBGQ193aG9sZSA8LSBBbGxTdWJzX05ldXJhbEFjdGl2YXRpb25fSG9ycm9yJE1QRkNfd2hvbGUKCiMgRGVmaW5lIG1vZGVscy4gCk02X2RmIDwtIGRhdGEuZnJhbWUoQWxsX05BY2Nfd2hvbGUsIEFsbF9BSW5zX3dob2xlLCBBbGxfTVBGQ193aG9sZSkgCk02X0NfZGYgPC0gZGF0YS5mcmFtZShDb21lZHlfTkFjY193aG9sZSwgQ29tZWR5X0FJbnNfd2hvbGUsIENvbWVkeV9NUEZDX3dob2xlKSAKTTZfSF9kZiA8LSBkYXRhLmZyYW1lKEhvcnJvcl9OQWNjX3dob2xlLCBIb3Jyb3JfQUluc193aG9sZSwgSG9ycm9yX01QRkNfd2hvbGUpIAoKTTdfZGYgPC0gZGF0YS5mcmFtZShBbGxfR3Jvc3NfVzFfbG9nLCBBbGxfUEEsIEFsbF9OQSwgQWxsX05BY2Nfd2hvbGUsIEFsbF9BSW5zX3dob2xlLCBBbGxfTVBGQ193aG9sZSkgCk03X0NfZGYgPC0gZGF0YS5mcmFtZShDb21lZHlfR3Jvc3NfVzFfbG9nLCBDb21lZHlfUEEsIENvbWVkeV9OQSwgQ29tZWR5X05BY2Nfd2hvbGUsCiAgICAgICAgICAgICAgICAgICAgICBDb21lZHlfQUluc193aG9sZSwgQ29tZWR5X01QRkNfd2hvbGUpIApNN19IX2RmIDwtIGRhdGEuZnJhbWUoSG9ycm9yX0dyb3NzX1cxX2xvZywgSG9ycm9yX1BBLCBIb3Jyb3JfTkEsIEhvcnJvcl9OQWNjX3dob2xlLAogICAgICAgICAgICAgICAgICAgICAgSG9ycm9yX0FJbnNfd2hvbGUsIEhvcnJvcl9NUEZDX3dob2xlKSAKYGBgCgpgYGB7cn0KIyBEZWZpbmUgb25zZXQgdmFyaWFibGVzLiAKQWxsX05BY2Nfb25zZXQgPC0gQWxsU3Vic19OZXVyYWxBY3RpdmF0aW9uJE5BY2Nfb25zZXQKQWxsX0FJbnNfb25zZXQgPC0gQWxsU3Vic19OZXVyYWxBY3RpdmF0aW9uJEFJbnNfb25zZXQKQWxsX01QRkNfb25zZXQgPC0gQWxsU3Vic19OZXVyYWxBY3RpdmF0aW9uJE1QRkNfb25zZXQKCkNvbWVkeV9OQWNjX29uc2V0IDwtIEFsbFN1YnNfTmV1cmFsQWN0aXZhdGlvbl9Db21lZHkkTkFjY19vbnNldApDb21lZHlfQUluc19vbnNldCA8LSBBbGxTdWJzX05ldXJhbEFjdGl2YXRpb25fQ29tZWR5JEFJbnNfb25zZXQKQ29tZWR5X01QRkNfb25zZXQgPC0gQWxsU3Vic19OZXVyYWxBY3RpdmF0aW9uX0NvbWVkeSRNUEZDX29uc2V0CgpIb3Jyb3JfTkFjY19vbnNldCA8LSBBbGxTdWJzX05ldXJhbEFjdGl2YXRpb25fSG9ycm9yJE5BY2Nfb25zZXQKSG9ycm9yX0FJbnNfb25zZXQgPC0gQWxsU3Vic19OZXVyYWxBY3RpdmF0aW9uX0hvcnJvciRBSW5zX29uc2V0CkhvcnJvcl9NUEZDX29uc2V0IDwtIEFsbFN1YnNfTmV1cmFsQWN0aXZhdGlvbl9Ib3Jyb3IkTVBGQ19vbnNldAoKIyBEZWZpbmUgbW9kZWxzLiAKTThfZGYgPC0gZGF0YS5mcmFtZShBbGxfTkFjY19vbnNldCwgQWxsX0FJbnNfb25zZXQsIEFsbF9NUEZDX29uc2V0KSAKTThfQ19kZiA8LSBkYXRhLmZyYW1lKENvbWVkeV9OQWNjX29uc2V0LCBDb21lZHlfQUluc19vbnNldCwgQ29tZWR5X01QRkNfb25zZXQpIApNOF9IX2RmIDwtIGRhdGEuZnJhbWUoSG9ycm9yX05BY2Nfb25zZXQsIEhvcnJvcl9BSW5zX29uc2V0LCBIb3Jyb3JfTVBGQ19vbnNldCkgCgpNOV9kZiA8LSBkYXRhLmZyYW1lKEFsbF9Hcm9zc19XMV9sb2csIEFsbF9QQSwgQWxsX05BLCBBbGxfTkFjY19vbnNldCwgQWxsX0FJbnNfb25zZXQsIEFsbF9NUEZDX29uc2V0KSAKTTlfQ19kZiA8LSBkYXRhLmZyYW1lKENvbWVkeV9Hcm9zc19XMV9sb2csIENvbWVkeV9QQSwgQ29tZWR5X05BLCBDb21lZHlfTkFjY19vbnNldCwKICAgICAgICAgICAgICAgICAgICAgIENvbWVkeV9BSW5zX29uc2V0LCBDb21lZHlfTVBGQ19vbnNldCkgCk05X0hfZGYgPC0gZGF0YS5mcmFtZShIb3Jyb3JfR3Jvc3NfVzFfbG9nLCBIb3Jyb3JfUEEsIEhvcnJvcl9OQSwgSG9ycm9yX05BY2Nfb25zZXQsCiAgICAgICAgICAgICAgICAgICAgICBIb3Jyb3JfQUluc19vbnNldCwgSG9ycm9yX01QRkNfb25zZXQpIApgYGAKCmBgYHtyfQojIERlZmluZSBtaWRkbGUgdmFyaWFibGVzLiAKQWxsX05BY2NfbWlkZGxlIDwtIEFsbFN1YnNfTmV1cmFsQWN0aXZhdGlvbiROQWNjX21pZGRsZQpBbGxfQUluc19taWRkbGUgPC0gQWxsU3Vic19OZXVyYWxBY3RpdmF0aW9uJEFJbnNfbWlkZGxlCkFsbF9NUEZDX21pZGRsZSA8LSBBbGxTdWJzX05ldXJhbEFjdGl2YXRpb24kTVBGQ19taWRkbGUKCkNvbWVkeV9OQWNjX21pZGRsZSA8LSBBbGxTdWJzX05ldXJhbEFjdGl2YXRpb25fQ29tZWR5JE5BY2NfbWlkZGxlCkNvbWVkeV9BSW5zX21pZGRsZSA8LSBBbGxTdWJzX05ldXJhbEFjdGl2YXRpb25fQ29tZWR5JEFJbnNfbWlkZGxlCkNvbWVkeV9NUEZDX21pZGRsZSA8LSBBbGxTdWJzX05ldXJhbEFjdGl2YXRpb25fQ29tZWR5JE1QRkNfbWlkZGxlCgpIb3Jyb3JfTkFjY19taWRkbGUgPC0gQWxsU3Vic19OZXVyYWxBY3RpdmF0aW9uX0hvcnJvciROQWNjX21pZGRsZQpIb3Jyb3JfQUluc19taWRkbGUgPC0gQWxsU3Vic19OZXVyYWxBY3RpdmF0aW9uX0hvcnJvciRBSW5zX21pZGRsZQpIb3Jyb3JfTVBGQ19taWRkbGUgPC0gQWxsU3Vic19OZXVyYWxBY3RpdmF0aW9uX0hvcnJvciRNUEZDX21pZGRsZQoKIyBEZWZpbmUgbW9kZWxzLiAKTTEwX2RmIDwtIGRhdGEuZnJhbWUoQWxsX05BY2NfbWlkZGxlLCBBbGxfQUluc19taWRkbGUsIEFsbF9NUEZDX21pZGRsZSkgCk0xMF9DX2RmIDwtIGRhdGEuZnJhbWUoQ29tZWR5X05BY2NfbWlkZGxlLCBDb21lZHlfQUluc19taWRkbGUsIENvbWVkeV9NUEZDX21pZGRsZSkgCk0xMF9IX2RmIDwtIGRhdGEuZnJhbWUoSG9ycm9yX05BY2NfbWlkZGxlLCBIb3Jyb3JfQUluc19taWRkbGUsIEhvcnJvcl9NUEZDX21pZGRsZSkgCgpNMTFfZGYgPC0gZGF0YS5mcmFtZShBbGxfR3Jvc3NfVzFfbG9nLCBBbGxfUEEsIEFsbF9OQSwgQWxsX05BY2NfbWlkZGxlLCBBbGxfQUluc19taWRkbGUsIEFsbF9NUEZDX21pZGRsZSkgCk0xMV9DX2RmIDwtIGRhdGEuZnJhbWUoQ29tZWR5X0dyb3NzX1cxX2xvZywgQ29tZWR5X1BBLCBDb21lZHlfTkEsIENvbWVkeV9OQWNjX21pZGRsZSwKICAgICAgICAgICAgICAgICAgICAgIENvbWVkeV9BSW5zX21pZGRsZSwgQ29tZWR5X01QRkNfbWlkZGxlKSAKTTExX0hfZGYgPC0gZGF0YS5mcmFtZShIb3Jyb3JfR3Jvc3NfVzFfbG9nLCBIb3Jyb3JfUEEsIEhvcnJvcl9OQSwgSG9ycm9yX05BY2NfbWlkZGxlLAogICAgICAgICAgICAgICAgICAgICAgSG9ycm9yX0FJbnNfbWlkZGxlLCBIb3Jyb3JfTVBGQ19taWRkbGUpIApgYGAKCmBgYHtyfQojIERlZmluZSBtaWRkbGUgdmFyaWFibGVzLiAKQWxsX05BY2Nfb2Zmc2V0IDwtIEFsbFN1YnNfTmV1cmFsQWN0aXZhdGlvbiROQWNjX29mZnNldApBbGxfQUluc19vZmZzZXQgPC0gQWxsU3Vic19OZXVyYWxBY3RpdmF0aW9uJEFJbnNfb2Zmc2V0CkFsbF9NUEZDX29mZnNldCA8LSBBbGxTdWJzX05ldXJhbEFjdGl2YXRpb24kTVBGQ19vZmZzZXQKCkNvbWVkeV9OQWNjX29mZnNldCA8LSBBbGxTdWJzX05ldXJhbEFjdGl2YXRpb25fQ29tZWR5JE5BY2Nfb2Zmc2V0CkNvbWVkeV9BSW5zX29mZnNldCA8LSBBbGxTdWJzX05ldXJhbEFjdGl2YXRpb25fQ29tZWR5JEFJbnNfb2Zmc2V0CkNvbWVkeV9NUEZDX29mZnNldCA8LSBBbGxTdWJzX05ldXJhbEFjdGl2YXRpb25fQ29tZWR5JE1QRkNfb2Zmc2V0CgpIb3Jyb3JfTkFjY19vZmZzZXQgPC0gQWxsU3Vic19OZXVyYWxBY3RpdmF0aW9uX0hvcnJvciROQWNjX29mZnNldApIb3Jyb3JfQUluc19vZmZzZXQgPC0gQWxsU3Vic19OZXVyYWxBY3RpdmF0aW9uX0hvcnJvciRBSW5zX29mZnNldApIb3Jyb3JfTVBGQ19vZmZzZXQgPC0gQWxsU3Vic19OZXVyYWxBY3RpdmF0aW9uX0hvcnJvciRNUEZDX29mZnNldAoKIyBEZWZpbmUgbW9kZWxzLiAKTTEyX2RmIDwtIGRhdGEuZnJhbWUoQWxsX05BY2Nfb2Zmc2V0LCBBbGxfQUluc19vZmZzZXQsIEFsbF9NUEZDX29mZnNldCkgCk0xMl9DX2RmIDwtIGRhdGEuZnJhbWUoQ29tZWR5X05BY2Nfb2Zmc2V0LCBDb21lZHlfQUluc19vZmZzZXQsIENvbWVkeV9NUEZDX29mZnNldCkgCk0xMl9IX2RmIDwtIGRhdGEuZnJhbWUoSG9ycm9yX05BY2Nfb2Zmc2V0LCBIb3Jyb3JfQUluc19vZmZzZXQsIEhvcnJvcl9NUEZDX29mZnNldCkgCgpNMTNfZGYgPC0gZGF0YS5mcmFtZShBbGxfR3Jvc3NfVzFfbG9nLCBBbGxfUEEsIEFsbF9OQSwgQWxsX05BY2Nfb2Zmc2V0LCBBbGxfQUluc19vZmZzZXQsIEFsbF9NUEZDX29mZnNldCkgCk0xM19DX2RmIDwtIGRhdGEuZnJhbWUoQ29tZWR5X0dyb3NzX1cxX2xvZywgQ29tZWR5X1BBLCBDb21lZHlfTkEsIENvbWVkeV9OQWNjX29mZnNldCwKICAgICAgICAgICAgICAgICAgICAgIENvbWVkeV9BSW5zX29mZnNldCwgQ29tZWR5X01QRkNfb2Zmc2V0KSAKTTEzX0hfZGYgPC0gZGF0YS5mcmFtZShIb3Jyb3JfR3Jvc3NfVzFfbG9nLCBIb3Jyb3JfUEEsIEhvcnJvcl9OQSwgSG9ycm9yX05BY2Nfb2Zmc2V0LAogICAgICAgICAgICAgICAgICAgICAgSG9ycm9yX0FJbnNfb2Zmc2V0LCBIb3Jyb3JfTVBGQ19vZmZzZXQpIApgYGAKCmBgYHtyfQoKTTE0X2RmIDwtIGRhdGEuZnJhbWUoQWxsX0dyb3NzX1cxX2xvZywgQWxsX1BBLCBBbGxfTkEsIEFsbF9OQWNjX29uc2V0LCBBbGxfQUluc19taWRkbGUsIEFsbF9NUEZDX29mZnNldCkgCk0xNF9DX2RmIDwtIGRhdGEuZnJhbWUoQ29tZWR5X0dyb3NzX1cxX2xvZywgQ29tZWR5X1BBLCBDb21lZHlfTkEsIENvbWVkeV9OQWNjX29uc2V0LAogICAgICAgICAgICAgICAgICAgICAgQ29tZWR5X0FJbnNfbWlkZGxlLCBDb21lZHlfTVBGQ19vZmZzZXQpIApNMTRfSF9kZiA8LSBkYXRhLmZyYW1lKEhvcnJvcl9Hcm9zc19XMV9sb2csIEhvcnJvcl9QQSwgSG9ycm9yX05BLCBIb3Jyb3JfTkFjY19vbnNldCwKICAgICAgICAgICAgICAgICAgICAgIEhvcnJvcl9BSW5zX21pZGRsZSwgSG9ycm9yX01QRkNfb2Zmc2V0KSAKYGBgCgoKIyBOZXVyb2ZvcmVjYXN0aW5nOiBGaXJzdCBXZWVrIFVTLgojIyBNMTogQmVoYXZpb3JhbCBkYXRhIApgYGB7ciwgZWNobyA9IEZBTFNFfQpNMSA8LSBsbShsb2coR3Jvc3NfVVNfVzFfbnVtKSB+IFR5cGUgCiAgICAgICAgICsgc2NhbGUoVGhlYXRlcnNfVVNfVzFfbnVtKQogICAgICAgICArIFR5cGU6c2NhbGUoVGhlYXRlcnNfVVNfVzFfbnVtKQogICAgICAgICAsIGRhdGEgPSBBbGxTdWJzX05ldXJhbEFjdGl2YXRpb24gJT4lIG11dGF0ZShUeXBlID0gZmFjdG9yKFR5cGUsIGxldmVscyA9IGMoImhvcnJvciIsICJjb21lZHkiKSkpKQpzdW1tYXJ5KE0xKQpyLnNxdWFyZWRHTE1NKE0xKQpBSUMoTTEpCgojIENyZWF0ZSBwYWlycyBwbG90LiAKZ2dwYWlycyhNMV9kZikKZ2dwYWlycyhNMV9DX2RmKQpnZ3BhaXJzKE0xX0hfZGYpCmBgYAoKCiMjIE0yOiBBZmZlY3RpdmUgZGF0YSBhbG9uZQpgYGB7ciwgZWNobyA9IEZBTFNFfQpNMiA8LSBsbShsb2coR3Jvc3NfVVNfVzFfbnVtKSB+IFR5cGUgCiAgICAgICAgICsgc2NhbGUoUG9zX2Fyb3VzYWxfc2NhbGVkKSAKICAgICAgICAgKyBzY2FsZShOZWdfYXJvdXNhbF9zY2FsZWQpCiAgICAgICAgICsgVHlwZTpzY2FsZShQb3NfYXJvdXNhbF9zY2FsZWQpCiAgICAgICAgICsgVHlwZTpzY2FsZShOZWdfYXJvdXNhbF9zY2FsZWQpCiAgICAgICAgICwgZGF0YSA9IEFsbFN1YnNfTmV1cmFsQWN0aXZhdGlvbiAlPiUgbXV0YXRlKFR5cGUgPSBmYWN0b3IoVHlwZSwgbGV2ZWxzID0gYygiaG9ycm9yIiwgImNvbWVkeSIpKSkpCnN1bW1hcnkoTTIpCnIuc3F1YXJlZEdMTU0oTTIpCkFJQyhNMikKCiMgQ3JlYXRlIHBhaXJzIHBsb3QuIApnZ3BhaXJzKE0yX2RmKQpnZ3BhaXJzKE0yX0NfZGYpCmdncGFpcnMoTTJfSF9kZikKYGBgCgojIyBNMzogQWdncmVnYXRlIGFuZCBhZmZlY3RpdmUgZGF0YSBhbG9uZQpgYGB7ciwgZWNobyA9IEZBTFNFfQpNMyA8LSBsbShsb2coR3Jvc3NfVVNfVzFfbnVtKSB+IFR5cGUgCiAgICAgICAgICMrIHNjYWxlKFRoZWF0ZXJzX1VTX1cxX251bSkKICAgICAgICAgKyBzY2FsZShQb3NfYXJvdXNhbF9zY2FsZWQpIAogICAgICAgICArIHNjYWxlKE5lZ19hcm91c2FsX3NjYWxlZCkKICAgICAgICAgIysgVHlwZTpzY2FsZShUaGVhdGVyc19VU19XMV9udW0pCiAgICAgICAgICsgVHlwZTpzY2FsZShQb3NfYXJvdXNhbF9zY2FsZWQpCiAgICAgICAgICsgVHlwZTpzY2FsZShOZWdfYXJvdXNhbF9zY2FsZWQpCiAgICAgICAgICwgZGF0YSA9IEFsbFN1YnNfTmV1cmFsQWN0aXZhdGlvbiAlPiUgbXV0YXRlKFR5cGUgPSBmYWN0b3IoVHlwZSwgbGV2ZWxzID0gYygiaG9ycm9yIiwgImNvbWVkeSIpKSkpCnN1bW1hcnkoTTMpCnIuc3F1YXJlZEdMTU0oTTMpCkFJQyhNMykKCmBgYAoKIyBNNDogSVNDIGRhdGEgYWxvbmUKYGBge3IsIGVjaG8gPSBGQUxTRX0KTTQgPC0gbG0obG9nKEdyb3NzX1VTX1cxX251bSkgfiBUeXBlICsgCiAgICAgICAgICAgICAgKyBzY2FsZShOQWNjX0lTQykgCiAgICAgICAgICAgICAgKyBzY2FsZShBSW5zX0lTQykgCiAgICAgICAgICAgICAgKyBzY2FsZShNUEZDX0lTQykgCiAgICAgICAgICAgICAgKyBUeXBlOnNjYWxlKE5BY2NfSVNDKSAKICAgICAgICAgICAgICArIFR5cGU6c2NhbGUoQUluc19JU0MpIAogICAgICAgICAgICAgICsgVHlwZTpzY2FsZShNUEZDX0lTQykgCiAgICAgICAgICAgICAgLCBkYXRhID0gQWxsU3Vic19OZXVyYWxBY3RpdmF0aW9uICU+JSBtdXRhdGUoVHlwZSA9IGZhY3RvcihUeXBlLCBsZXZlbHMgPSBjKCJob3Jyb3IiLCAiY29tZWR5IikpKSkKc3VtbWFyeShNNCkKci5zcXVhcmVkR0xNTShNNCkKQUlDKE00KQoKIyBDcmVhdGUgcGFpcnMgcGxvdC4gCmdncGFpcnMoTTRfZGYpCmdncGFpcnMoTTRfQ19kZikKZ2dwYWlycyhNNF9IX2RmKQpgYGAKCiMgTTU6IElTQyBkYXRhICsgYWZmZWN0aXZlIGRhdGEgKyBiZWhhdmlvcmFsIGRhdGEKYGBge3IsIGVjaG8gPSBGQUxTRX0KTTUgPC0gbG0obG9nKEdyb3NzX1VTX1cxX251bSkgfiBUeXBlIAogICAgICAgICAgICAgKyBzY2FsZShUaGVhdGVyc19VU19XMV9udW0pIAogICAgICAgICAgICAgKyBzY2FsZShQb3NfYXJvdXNhbF9zY2FsZWQpIAogICAgICAgICAgICAgKyBzY2FsZShOZWdfYXJvdXNhbF9zY2FsZWQpICAKICAgICAgICAgICAgICMrIHNjYWxlKFdfc2NvcmVfc2NhbGVkKSAKICAgICAgICAgICAgICsgc2NhbGUoTkFjY19JU0MpIAogICAgICAgICAgICAgKyBzY2FsZShBSW5zX0lTQykgCiAgICAgICAgICAgICArIHNjYWxlKE1QRkNfSVNDKSAKICAgICAgICAgICAgICsgVHlwZTpzY2FsZShUaGVhdGVyc19VU19XMV9udW0pIAogICAgICAgICAgICAgKyBUeXBlOnNjYWxlKFBvc19hcm91c2FsX3NjYWxlZCkKICAgICAgICAgICAgICsgVHlwZTpzY2FsZShOZWdfYXJvdXNhbF9zY2FsZWQpCiAgICAgICAgICAgICAjKyBUeXBlOnNjYWxlKFdfc2NvcmVfc2NhbGVkKQogICAgICAgICAgICAgKyBUeXBlOnNjYWxlKE5BY2NfSVNDKSAKICAgICAgICAgICAgICsgVHlwZTpzY2FsZShBSW5zX0lTQykgCiAgICAgICAgICAgICArIFR5cGU6c2NhbGUoTVBGQ19JU0MpCiAgICAgICAgICAgICAsIGRhdGEgPSBBbGxTdWJzX05ldXJhbEFjdGl2YXRpb24gJT4lIG11dGF0ZShUeXBlID0gZmFjdG9yKFR5cGUsIGxldmVscyA9IGMoImhvcnJvciIsICJjb21lZHkiKSkpKQpzdW1tYXJ5KE01KQpyLnNxdWFyZWRHTE1NKE01KQpBSUMoTTUpCgojIENyZWF0ZSBwYWlycyBwbG90LiAKZ2dwYWlycyhNNV9kZikKZ2dwYWlycyhNNV9DX2RmKQpnZ3BhaXJzKE01X0hfZGYpCmBgYAoKIyBNNjogTmV1cmFsIHdob2xlIGRhdGEgYWxvbmUKYGBge3IsIGVjaG8gPSBGQUxTRX0KTTYgPC0gbG0obG9nKEdyb3NzX1VTX1cxX251bSkgfiBUeXBlICsgCiAgICAgICAgICAgICAgIysgVGhlYXRlcnNfVVNfVzFfbnVtIAogICAgICAgICAgICAgICsgc2NhbGUoTkFjY193aG9sZSkgCiAgICAgICAgICAgICAgKyBzY2FsZShBSW5zX3dob2xlKSAKICAgICAgICAgICAgICArIHNjYWxlKE1QRkNfd2hvbGUpIAogICAgICAgICAgICAgICsgVHlwZTpzY2FsZShOQWNjX3dob2xlKSAKICAgICAgICAgICAgICArIFR5cGU6c2NhbGUoQUluc193aG9sZSkgCiAgICAgICAgICAgICAgKyBUeXBlOnNjYWxlKE1QRkNfd2hvbGUpIAogICAgICAgICAgICAgICwgZGF0YSA9IEFsbFN1YnNfTmV1cmFsQWN0aXZhdGlvbiAlPiUgbXV0YXRlKFR5cGUgPSBmYWN0b3IoVHlwZSwgbGV2ZWxzID0gYygiaG9ycm9yIiwgImNvbWVkeSIpKSkpCnN1bW1hcnkoTTYpCnIuc3F1YXJlZEdMTU0oTTYpCkFJQyhNNikKCiMgQ3JlYXRlIHBhaXJzIHBsb3QuIApnZ3BhaXJzKE02X2RmKQpnZ3BhaXJzKE02X0NfZGYpCmdncGFpcnMoTTZfSF9kZikKYGBgCgojIE03OiBOZXVyYWwgd2hvbGUgZGF0YSArIGFmZmVjdGl2ZSBkYXRhICsgYmVoYXZpb3JhbCBkYXRhCmBgYHtyLCBlY2hvID0gRkFMU0V9Ck03IDwtIGxtKGxvZyhHcm9zc19VU19XMV9udW0pIH4gVHlwZSAKICAgICAgICAgICAgICsgc2NhbGUoVGhlYXRlcnNfVVNfVzFfbnVtKQogICAgICAgICAgICAgIysgVG90YWxfd2Vla3MgCiAgICAgICAgICAgICAjKyBXZWVrc19hdmdfcGVyX3RoZWF0ZXIKICAgICAgICAgICAgICsgc2NhbGUoUG9zX2Fyb3VzYWxfc2NhbGVkKSAKICAgICAgICAgICAgICsgc2NhbGUoTmVnX2Fyb3VzYWxfc2NhbGVkKSAgCiAgICAgICAgICAgICAjKyBzY2FsZShXX3Njb3JlX3NjYWxlZCkgCiAgICAgICAgICAgICArIHNjYWxlKE5BY2Nfd2hvbGUpIAogICAgICAgICAgICAgKyBzY2FsZShBSW5zX3dob2xlKSAKICAgICAgICAgICAgICsgc2NhbGUoTVBGQ193aG9sZSkgCiAgICAgICAgICAgICArIFR5cGU6c2NhbGUoVGhlYXRlcnNfVVNfVzFfbnVtKQogICAgICAgICAgICAgKyBUeXBlOnNjYWxlKFBvc19hcm91c2FsX3NjYWxlZCkKICAgICAgICAgICAgICsgVHlwZTpzY2FsZShOZWdfYXJvdXNhbF9zY2FsZWQpCiAgICAgICAgICAgICArIFR5cGU6c2NhbGUoTkFjY193aG9sZSkgCiAgICAgICAgICAgICArIFR5cGU6c2NhbGUoQUluc193aG9sZSkgCiAgICAgICAgICAgICArIFR5cGU6c2NhbGUoTVBGQ193aG9sZSkKICAgICAgICAgICAgICwgZGF0YSA9IEFsbFN1YnNfTmV1cmFsQWN0aXZhdGlvbiAlPiUgbXV0YXRlKFR5cGUgPSBmYWN0b3IoVHlwZSwgbGV2ZWxzID0gYygiaG9ycm9yIiwgImNvbWVkeSIpKSkpCnN1bW1hcnkoTTcpCnIuc3F1YXJlZEdMTU0oTTcpCkFJQyhNNykKCiMgQ3JlYXRlIHBhaXJzIHBsb3QuIApnZ3BhaXJzKE03X2RmKQpnZ3BhaXJzKE03X0NfZGYpCmdncGFpcnMoTTdfSF9kZikKYGBgCgojIE04OiBOZXVyYWwgb25zZXQgZGF0YSBhbG9uZQpgYGB7ciwgZWNobyA9IEZBTFNFfQpNOCA8LSBsbShsb2coR3Jvc3NfVVNfVzFfbnVtKSB+IFR5cGUgKyAKICAgICAgICAgICAgICArIHNjYWxlKE5BY2Nfb25zZXQpIAogICAgICAgICAgICAgICsgc2NhbGUoQUluc19vbnNldCkgCiAgICAgICAgICAgICAgKyBzY2FsZShNUEZDX29uc2V0KSAKICAgICAgICAgICAgICArIFR5cGU6c2NhbGUoTkFjY19vbnNldCkgCiAgICAgICAgICAgICAgKyBUeXBlOnNjYWxlKEFJbnNfb25zZXQpIAogICAgICAgICAgICAgICsgVHlwZTpzY2FsZShNUEZDX29uc2V0KSAKICAgICAgICAgICAgICAsIGRhdGEgPSBBbGxTdWJzX05ldXJhbEFjdGl2YXRpb24gJT4lIG11dGF0ZShUeXBlID0gZmFjdG9yKFR5cGUsIGxldmVscyA9IGMoImhvcnJvciIsICJjb21lZHkiKSkpKQpzdW1tYXJ5KE04KQpyLnNxdWFyZWRHTE1NKE04KQpBSUMoTTgpCgojIENyZWF0ZSBwYWlycyBwbG90LiAKZ2dwYWlycyhNOF9kZikKZ2dwYWlycyhNOF9DX2RmKQpnZ3BhaXJzKE04X0hfZGYpCmBgYAoKIyBNOTogTmV1cmFsIG9uc2V0IGRhdGEgKyBhZmZlY3RpdmUgZGF0YSArIGJlaGF2aW9yYWwgZGF0YQpgYGB7ciwgZWNobyA9IEZBTFNFfQpNOSA8LSBsbShsb2coR3Jvc3NfVVNfVzFfbnVtKSB+IFR5cGUgCiAgICAgICAgICAgICArIHNjYWxlKFRoZWF0ZXJzX1VTX1cxX251bSkKICAgICAgICAgICAgICsgc2NhbGUoUG9zX2Fyb3VzYWxfc2NhbGVkKSAKICAgICAgICAgICAgICsgc2NhbGUoTmVnX2Fyb3VzYWxfc2NhbGVkKSAgCiAgICAgICAgICAgICArIHNjYWxlKE5BY2Nfb25zZXQpIAogICAgICAgICAgICAgKyBzY2FsZShBSW5zX29uc2V0KSAKICAgICAgICAgICAgICsgc2NhbGUoTVBGQ19vbnNldCkgCiAgICAgICAgICAgICArIFR5cGU6c2NhbGUoVGhlYXRlcnNfVVNfVzFfbnVtKQogICAgICAgICAgICAgKyBUeXBlOnNjYWxlKFBvc19hcm91c2FsX3NjYWxlZCkKICAgICAgICAgICAgICsgVHlwZTpzY2FsZShOZWdfYXJvdXNhbF9zY2FsZWQpCiAgICAgICAgICAgICArIFR5cGU6c2NhbGUoTkFjY19vbnNldCkgCiAgICAgICAgICAgICArIFR5cGU6c2NhbGUoQUluc19vbnNldCkgCiAgICAgICAgICAgICArIFR5cGU6c2NhbGUoTVBGQ19vbnNldCkKICAgICAgICAgICAgICwgZGF0YSA9IEFsbFN1YnNfTmV1cmFsQWN0aXZhdGlvbiAlPiUgbXV0YXRlKFR5cGUgPSBmYWN0b3IoVHlwZSwgbGV2ZWxzID0gYygiaG9ycm9yIiwgImNvbWVkeSIpKSkpCnN1bW1hcnkoTTkpCnIuc3F1YXJlZEdMTU0oTTkpCkFJQyhNOSkKCiMgQ3JlYXRlIHBhaXJzIHBsb3QuIApnZ3BhaXJzKE05X2RmKQpnZ3BhaXJzKE05X0NfZGYpCmdncGFpcnMoTTlfSF9kZikKYGBgCgojIE0xMDogTmV1cmFsIG1pZGRsZSBkYXRhIGFsb25lCmBgYHtyLCBlY2hvID0gRkFMU0V9Ck0xMCA8LSBsbShsb2coR3Jvc3NfVVNfVzFfbnVtKSB+IFR5cGUgKyAKICAgICAgICAgICAgICArIHNjYWxlKE5BY2NfbWlkZGxlKSAKICAgICAgICAgICAgICArIHNjYWxlKEFJbnNfbWlkZGxlKSAKICAgICAgICAgICAgICArIHNjYWxlKE1QRkNfbWlkZGxlKSAKICAgICAgICAgICAgICArIFR5cGU6c2NhbGUoTkFjY19taWRkbGUpIAogICAgICAgICAgICAgICsgVHlwZTpzY2FsZShBSW5zX21pZGRsZSkgCiAgICAgICAgICAgICAgKyBUeXBlOnNjYWxlKE1QRkNfbWlkZGxlKSAKICAgICAgICAgICAgICAsIGRhdGEgPSBBbGxTdWJzX05ldXJhbEFjdGl2YXRpb24gJT4lIG11dGF0ZShUeXBlID0gZmFjdG9yKFR5cGUsIGxldmVscyA9IGMoImhvcnJvciIsICJjb21lZHkiKSkpKQpzdW1tYXJ5KE0xMCkKci5zcXVhcmVkR0xNTShNMTApCkFJQyhNMTApCgojIENyZWF0ZSBwYWlycyBwbG90LiAKZ2dwYWlycyhNMTBfZGYpCmdncGFpcnMoTTEwX0NfZGYpCmdncGFpcnMoTTEwX0hfZGYpCmBgYAoKIyBNMTE6IE5ldXJhbCBtaWRkbGUgZGF0YSArIGFmZmVjdGl2ZSBkYXRhICsgYmVoYXZpb3JhbCBkYXRhCmBgYHtyLCBlY2hvID0gRkFMU0V9Ck0xMSA8LSBsbShsb2coR3Jvc3NfVVNfVzFfbnVtKSB+IFR5cGUgCiAgICAgICAgICAgICArIHNjYWxlKFRoZWF0ZXJzX1VTX1cxX251bSkKICAgICAgICAgICAgICsgc2NhbGUoUG9zX2Fyb3VzYWxfc2NhbGVkKSAKICAgICAgICAgICAgICsgc2NhbGUoTmVnX2Fyb3VzYWxfc2NhbGVkKSAgCiAgICAgICAgICAgICArIHNjYWxlKE5BY2NfbWlkZGxlKSAKICAgICAgICAgICAgICsgc2NhbGUoQUluc19taWRkbGUpIAogICAgICAgICAgICAgKyBzY2FsZShNUEZDX21pZGRsZSkgCiAgICAgICAgICAgICArIFR5cGU6c2NhbGUoVGhlYXRlcnNfVVNfVzFfbnVtKQogICAgICAgICAgICAgKyBUeXBlOnNjYWxlKFBvc19hcm91c2FsX3NjYWxlZCkKICAgICAgICAgICAgICsgVHlwZTpzY2FsZShOZWdfYXJvdXNhbF9zY2FsZWQpCiAgICAgICAgICAgICArIFR5cGU6c2NhbGUoTkFjY19taWRkbGUpIAogICAgICAgICAgICAgKyBUeXBlOnNjYWxlKEFJbnNfbWlkZGxlKSAKICAgICAgICAgICAgICsgVHlwZTpzY2FsZShNUEZDX21pZGRsZSkKICAgICAgICAgICAgICwgZGF0YSA9IEFsbFN1YnNfTmV1cmFsQWN0aXZhdGlvbiAlPiUgbXV0YXRlKFR5cGUgPSBmYWN0b3IoVHlwZSwgbGV2ZWxzID0gYygiaG9ycm9yIiwgImNvbWVkeSIpKSkpCnN1bW1hcnkoTTExKQpyLnNxdWFyZWRHTE1NKE0xMSkKQUlDKE0xMSkKCiMgQ3JlYXRlIHBhaXJzIHBsb3QuIApnZ3BhaXJzKE0xMV9kZikKZ2dwYWlycyhNMTFfQ19kZikKZ2dwYWlycyhNMTFfSF9kZikKYGBgCgojIE0xMjogTmV1cmFsIG9mZnNldCBkYXRhIGFsb25lCmBgYHtyLCBlY2hvID0gRkFMU0V9Ck0xMiA8LSBsbShsb2coR3Jvc3NfVVNfVzFfbnVtKSB+IFR5cGUgKyAKICAgICAgICAgICAgICArIHNjYWxlKE5BY2Nfb2Zmc2V0KSAKICAgICAgICAgICAgICArIHNjYWxlKEFJbnNfb2Zmc2V0KSAKICAgICAgICAgICAgICArIHNjYWxlKE1QRkNfb2Zmc2V0KSAKICAgICAgICAgICAgICArIFR5cGU6c2NhbGUoTkFjY19vZmZzZXQpIAogICAgICAgICAgICAgICsgVHlwZTpzY2FsZShBSW5zX29mZnNldCkgCiAgICAgICAgICAgICAgKyBUeXBlOnNjYWxlKE1QRkNfb2Zmc2V0KSAKICAgICAgICAgICAgICAsIGRhdGEgPSBBbGxTdWJzX05ldXJhbEFjdGl2YXRpb24gJT4lIG11dGF0ZShUeXBlID0gZmFjdG9yKFR5cGUsIGxldmVscyA9IGMoImhvcnJvciIsICJjb21lZHkiKSkpKQpzdW1tYXJ5KE0xMikKci5zcXVhcmVkR0xNTShNMTIpCkFJQyhNMTIpCgojIENyZWF0ZSBwYWlycyBwbG90LiAKZ2dwYWlycyhNMTJfZGYpCmdncGFpcnMoTTEyX0NfZGYpCmdncGFpcnMoTTEyX0hfZGYpCmBgYAoKIyBNMTM6IE5ldXJhbCBvZmZzZXQgZGF0YSArIGFmZmVjdGl2ZSBkYXRhICsgYmVoYXZpb3JhbCBkYXRhCmBgYHtyLCBlY2hvID0gRkFMU0V9Ck0xMyA8LSBsbShsb2coR3Jvc3NfVVNfVzFfbnVtKSB+IFR5cGUgCiAgICAgICAgICAgICArIHNjYWxlKFRoZWF0ZXJzX1VTX1cxX251bSkKICAgICAgICAgICAgICsgc2NhbGUoUG9zX2Fyb3VzYWxfc2NhbGVkKSAKICAgICAgICAgICAgICsgc2NhbGUoTmVnX2Fyb3VzYWxfc2NhbGVkKSAgCiAgICAgICAgICAgICArIHNjYWxlKE5BY2Nfb2Zmc2V0KSAKICAgICAgICAgICAgICsgc2NhbGUoQUluc19vZmZzZXQpIAogICAgICAgICAgICAgKyBzY2FsZShNUEZDX29mZnNldCkgCiAgICAgICAgICAgICArIFR5cGU6c2NhbGUoVGhlYXRlcnNfVVNfVzFfbnVtKQogICAgICAgICAgICAgKyBUeXBlOnNjYWxlKFBvc19hcm91c2FsX3NjYWxlZCkKICAgICAgICAgICAgICsgVHlwZTpzY2FsZShOZWdfYXJvdXNhbF9zY2FsZWQpCiAgICAgICAgICAgICArIFR5cGU6c2NhbGUoTkFjY19vZmZzZXQpIAogICAgICAgICAgICAgKyBUeXBlOnNjYWxlKEFJbnNfb2Zmc2V0KSAKICAgICAgICAgICAgICsgVHlwZTpzY2FsZShNUEZDX29mZnNldCkKICAgICAgICAgICAgICwgZGF0YSA9IEFsbFN1YnNfTmV1cmFsQWN0aXZhdGlvbiAlPiUgbXV0YXRlKFR5cGUgPSBmYWN0b3IoVHlwZSwgbGV2ZWxzID0gYygiaG9ycm9yIiwgImNvbWVkeSIpKSkpCnN1bW1hcnkoTTEzKQpyLnNxdWFyZWRHTE1NKE0xMykKQUlDKE0xMykKCiMgQ3JlYXRlIHBhaXJzIHBsb3QuIApnZ3BhaXJzKE0xM19kZikKZ2dwYWlycyhNMTNfQ19kZikKZ2dwYWlycyhNMTNfSF9kZikKYGBgCgojIE0xNDogU2VxdWVuY2UgbW9kZWwKYGBge3IsIGVjaG8gPSBGQUxTRX0KTTE0IDwtIGxtKGxvZyhHcm9zc19VU19XMV9udW0pIH4gVHlwZSAKICAgICAgICAgICAgICsgc2NhbGUoVGhlYXRlcnNfVVNfVzFfbnVtKQogICAgICAgICAgICAgKyBzY2FsZShQb3NfYXJvdXNhbF9zY2FsZWQpIAogICAgICAgICAgICAgKyBzY2FsZShOZWdfYXJvdXNhbF9zY2FsZWQpIAogICAgICAgICAgICAgIysgc2NhbGUoV19zY29yZV9zY2FsZWQpICAKICAgICAgICAgICAgICsgc2NhbGUoTkFjY19vbnNldCkgCiAgICAgICAgICAgICArIHNjYWxlKEFJbnNfbWlkZGxlKSAKICAgICAgICAgICAgICsgc2NhbGUoTVBGQ19vZmZzZXQpIAogICAgICAgICAgICAgKyBUeXBlOnNjYWxlKFRoZWF0ZXJzX1VTX1cxX251bSkKICAgICAgICAgICAgICsgVHlwZTpzY2FsZShQb3NfYXJvdXNhbF9zY2FsZWQpCiAgICAgICAgICAgICArIFR5cGU6c2NhbGUoTmVnX2Fyb3VzYWxfc2NhbGVkKQogICAgICAgICAgICAgIysgVHlwZTpzY2FsZShXX3Njb3JlX3NjYWxlZCkKICAgICAgICAgICAgICsgVHlwZTpzY2FsZShOQWNjX29uc2V0KSAKICAgICAgICAgICAgICsgVHlwZTpzY2FsZShBSW5zX21pZGRsZSkgCiAgICAgICAgICAgICArIFR5cGU6c2NhbGUoTVBGQ19vZmZzZXQpCiAgICAgICAgICAgICAsIGRhdGEgPSBBbGxTdWJzX05ldXJhbEFjdGl2YXRpb24gJT4lIG11dGF0ZShUeXBlID0gZmFjdG9yKFR5cGUsIGxldmVscyA9IGMoImhvcnJvciIsICJjb21lZHkiKSkpKQpzdW1tYXJ5KE0xNCkKci5zcXVhcmVkR0xNTShNMTQpCkFJQyhNMTQpCgojIENyZWF0ZSBwYWlycyBwbG90LiAKZ2dwYWlycyhNMTRfZGYpCmdncGFpcnMoTTE0X0NfZGYpCmdncGFpcnMoTTE0X0hfZGYpCmBgYAo=